class httpRequest {
    /**
     * 2025/03/08 更新
     * HttpRequest 请求类:
     */

    // 构造器
    constructor(baseUrl) {
        this.baseUrl = baseUrl
    }

    // 处理请求路径
    dealUrl(url) {
        url = url || ''
        return url.indexOf('/') === 0
            ? this.baseUrl.concat(url.substring(1))
            : url.indexOf('http') === 0
                ? url
                : this.baseUrl.concat(url)
    }

    // 获取token
    getToken() {
        const u = wx.getStorageSync('token') || {}
        return u || ''
    }

    // 请求拦截器
    interceptor_request(config) {
        let t = {
            ...config,
            dataType: config.dataType ?? 'json',
            url: this.dealUrl(config.url),
            method: (config.method || 'get').toUpperCase()
        }
        t.header = t.header || {}
        !t?.useToken
            ? (t.header['Authorization'] = '')
            : (t.header['Authorization'] = `Bearer ${this.getToken()}`)
        // this.getToken())
        return t
    }

    // 响应拦截器
    async interceptor_response(data, config) {
        let _data = data.data

        if (_data) {
            if (_data.code == 200) {
                return _data
            } else if (_data.code == 401) {
                // 补一个 提示 逻辑
                wx.removeStorageSync('userInfo')
                getApp().globalData.userInfo = {}
                wx.reLaunch({
                    url: '/pages/login/login'
                })
            } else {
                return _data
            }
        } else {
            if (data.statusCode == 200) {
                return Promise.reject({
                    code: 500,
                    msg: 'request ok but no response'
                })
            } else {
                return Promise.reject({
                    code: data.statusCode ?? 500,
                    msg: '服务器繁忙，请稍后再试'
                })
            }
        }
    }

    // 请求request
    request(config) {
        const _this = this

        return new Promise(function (resolve, reject) {
            config.requestTask = wx.request({
                ..._this.interceptor_request(config),
                success(res) {
                    console.log(res)
					if(res.statusCode == '403'){
                        console.log('这里是403')
						//跳转登录页面
						wx.reLaunch({
							url: "/pages/login/login", // 重新打开页面2
						});
					}
                    if (config.dataType) {
                        res.data = JSON.parse(res.data)
                    }

                    resolve(_this.interceptor_response(res, config))
                },
                fail(e) {
					console.log(`打印e==`,e)
                    //   debugger
                    reject({
                        code: 300,
                        msg: '网络请求异常'
                    })
                }
            })
        })
    }
}

export default httpRequest
